/* 
    客户端: 在网络节点中，负责消费资源的电脑成为客户端。(输入)
    服务器：提供网络资源的电脑。(处理、输出)

    静态资源：不变化的资源，每个用户看到的内容是一样的。
             比如淘宝的导航栏等样式。
             HTML, CSS, JavaScript, 图片等,负责页面的展现
    动态资源: 变化的资源，每个用户看到的不一样的内容，比如淘宝的购物车。
             Servlet, JSP 等，负责逻辑处理。
    数据库：负责数据存储
    
    举例：
        用户查看淘宝的购物车记录。
        用户通过浏览器发起请求，服务器接收到请求，根据请求的参数不同
        (用户id，查询的时间范围)，服务器，去数据库查询数据，组装数据，
        响应给客户端。
    问题：客户端和服务器怎么通讯？   
        
    客户端和服务器通过 http 协议进行通讯。

    http 协议：

    HTTP 请求数据格式(百度 ——> F12 ——> 网络 ——> 请求标头)
        1. 请求数据分为3个部分：
            1.1 请求行：请求数据的第一行。
                GET /lyj503522579/node1228/commits/master HTTP/1.1
                GET 请求方式，http/1.1 表示协议版本号
            1.2 请求头：请求的细则
                第二行开始，格式是 key：value
            1.3 请求体：POST 请求的最后一个部分，存放请求参数。
        2. 常见的 HTTP 请求头
            Host：请求的主机名
            User-Agent: 请求的浏览器版本                  
            Accept: 请求浏览器能接收的资源类型
            Accept-Language: 浏览器语言偏好
            Accept-Encoding: 浏览器可以支持的压缩类型,例如 gzip
        3. GET 和 POST 请求的区别
            1. GET 请求参数在请求行，没有请求体
            POST 请求参数在请求体
            2. GET请求参数的大小有限制，POST 没有。  
            
    HTTP-响应数据格式
        响应的数据分为3部分
            1. 响应行：响应数据的第一行，
                HTTP/1.1 200 OK

                HTTP/1.1 表示协议及版本号        
                200 响应状态码
                OK 状态码的英文描述
            2. 响应头：从第二行开始，格式是 key:value
                Content-Type: 表示该响应内容类型，例如text/html,image/jepg;
                Content-Length: 表示该响应内容的长度(字节数)
                Content-Encoding: 响应的压缩算法，例如gzip
                Cache-Control: 指示客户端如何缓存，例如 max-value=300, 表示最多可以缓存 300 s
            3. 响应体：最后一个部分，存放响应数据。
            4. 常见的状态码
                1xx : 响应中
                2xx : 响应成功
                3xx : 重定向(重定向到其它地方，让客户端再发送一个完整的请求)
                4xx : 客户端异常，如资源不存在，请求方式异常，未授权
                5xx : 服务器异常，服务器宕机，路由异常
                详细见百度               

*/